/**
 * @负责存放每个路由对应的处理函数
 * @获取用户基本信息
 */

// 导入数据库操作模块,一般叫做db
const db = require('../db')
const bcrypt = require('bcryptjs')
// 获取
exports.reqUserInfo = (req, res) => {
  const selectSql = `select id, username, bieming, email, userpic from var_user where id=?`
  // req 对象上的 user 属性，是 Token 解析成功，express-jwt 中间件帮我们挂载上去的
  db.query(selectSql, req.user.id, (err, results) => {
    if (err) return res.fa(err)
    if (results.length !== 1) return res.fa('获取用户信息失败!')
    // 用户信息获取成功
    res.send({ status: 0, message: '获取用户信息成功', data: results[0] })
  })
}
// 更新
exports.reqUpdateUserInfo = (req, res) => {
  const selectSql = `update var_user set ? where id=?`
  // req 对象上的 user 属性，是 Token 解析成功，express-jwt 中间件帮我们挂载上去的
  db.query(selectSql, [req.body, req.body.id], (err, results) => {
    if (err) return res.fa(err)
    if (results.affectedRows != 1) return res.fa('修改用户信息失败!')
    // 用户信息修改成功
    res.ok('修改用户信息成功')
  })
}
// 更新密码
exports.reqUpdatePwd = (req, res) => {
  const selectSql = `select * from var_user where id=?`
  // req 对象上的 user 属性，是 Token 解析成功，express-jwt 中间件帮我们挂载上去的
  db.query(selectSql, req.user.id, (err, results) => {
    if (err) return res.fa(err)
    if (results.length !== 1) return res.fa('用户不存在!')
    // // 判断提交的旧密码是否正确
    const compareRes = bcrypt.compareSync(req.body.oldPwd, results[0].password)
    if (!compareRes) return res.fa('旧密码错误')
    // //---12- 定义更新密码的 SQL 语句
    const updateSql = `update var_user set password=? where id=?`
    const newPwd = bcrypt.hashSync(req.body.newPwd, 10)
    db.query(updateSql, [newPwd, req.user.id], (err, results) => {
      if (err) return res.fa(err)
      if (results.affectedRows !== 1) return res.fa('更新密码失败')
      res.ok('更新密码成功')
    })
  })
}

// 更新头像
exports.reqUpdatePic = (req, res) => {
  const selectSql = `update var_user set userpic=? where id=?`
  // req 对象上的 user 属性，是 Token 解析成功，express-jwt 中间件帮我们挂载上去的
  db.query(selectSql, [req.body.touxiang, req.user.id], (err, results) => {
    if (err) return res.fa(err)
    if (results.affectedRows !== 1) return res.fa('更新头像失败')
    res.ok('更新头像成功')
  })
}
